treeview: Draw empty tree view with Cairo
authorBenjamin Otte <otte@redhat.com>
Mon, 6 Sep 2010 10:19:58 +0000 (12:19 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 26 Sep 2010 13:11:36 +0000 (15:11 +0200)
gtk/gtktreeview.c

index 937aaf5097895d135f9b85ed95c8a0e58347acd2..92931863babf068ed2d4aac83ede35156c09d5f7 100644 (file)
@@ -4229,7 +4229,7 @@ invalidate_empty_focus (GtkTreeView *tree_view)
  * is empty.
  */
 static void
-draw_empty_focus (GtkTreeView *tree_view, GdkRectangle *clip_area)
+draw_empty_focus (GtkTreeView *tree_view, cairo_t *cr)
 {
   GtkWidget *widget = GTK_WIDGET (tree_view);
   gint w, h;
@@ -4243,10 +4243,9 @@ draw_empty_focus (GtkTreeView *tree_view, GdkRectangle *clip_area)
   h -= 2;
 
   if (w > 0 && h > 0)
-    gtk_paint_focus (gtk_widget_get_style (widget),
-                    tree_view->priv->bin_window,
+    gtk_cairo_paint_focus (gtk_widget_get_style (widget),
+                     cr,
                     gtk_widget_get_state (widget),
-                    clip_area,
                     widget,
                     NULL,
                     1, 1, w, h);
@@ -4397,22 +4396,19 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                        "focus-line-width", &focus_line_width,
                        NULL);
 
+  cr = gdk_cairo_create (event->window);
+  gdk_cairo_region (cr, event->region);
+  cairo_clip (cr);
+
   if (tree_view->priv->tree == NULL)
     {
-      draw_empty_focus (tree_view, &event->area);
+      draw_empty_focus (tree_view, cr);
+      cairo_destroy (cr);
       return TRUE;
     }
 
-  /* clip event->area to the visible area */
-  if (event->area.height < 0)
-    return TRUE;
-
   validate_visible_area (tree_view);
 
-  cr = gdk_cairo_create (event->window);
-  gdk_cairo_region (cr, event->region);
-  cairo_clip (cr);
-
   style = gtk_widget_get_style (widget);
 
   new_y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, event->area.y);